package com.wyl.auth.service;

import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wyl.auth.dto.SysMenuDto;
import com.wyl.auth.dto.SysRoleMenuDto;
import com.wyl.auth.entity.SysMenu;
import com.wyl.auth.req.SysMenuReq;
import com.wyl.auth.vo.SysMenuVo;
import com.wyl.common.CommonPage;

import java.io.Serializable;
import java.util.List;

/**
* @Description 菜单表
* @Author WuYiLong
* @Date 2024-12-02
*/
public interface SysMenuService extends IService<SysMenu> {

    /**
     * 保存
     * @param sysMenuDto
     */
    Long save(SysMenuDto sysMenuDto);

    /**
     * 菜单列表
     * @return
     */
    List<SysMenuVo> listSysMenu(SysMenuReq req);

    /**
     * 树形菜单
     * @return
     */
    List<Tree<Long>> treeSysMenu(SysMenuReq req);

    /**
     * 树形菜单
     * @return
     */
    List<Tree<Long>> treeSysMenu();

    /**
     * 分页
     * @param req
     * @return
     */
    CommonPage<SysMenuVo> page(SysMenuReq req);

    /**
     * 删除
     * @param ids
     */
    void deleteByIds(List<Long> ids);

    /**
     * 目录
     * @return
     */
    List<Tree<Long>> listCatalog();

    /**
     * 获取当前登录用户的权限id
     * @return
     */
    List<Long> getMenuIdsByUserId();

    /**
     * 获取指定用户的权限code
     * @return
     */
    List<String> getMenuCodesByUserId(Long sysUserId);

    /**
     * 获取指定用户的访问权限
     * @return
     */
    List<String> getUrlByUserId(Long sysUserId);


}
